package com.webmagic.test;

import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.Spider;
import us.codecraft.webmagic.pipeline.FilePipeline;
import us.codecraft.webmagic.processor.PageProcessor;
import us.codecraft.webmagic.scheduler.BloomFilterDuplicateRemover;
import us.codecraft.webmagic.scheduler.QueueScheduler;

public class JobProcessor implements PageProcessor {

    // 解析页面
    public void process(Page page) {
        // 解析返回的数据page, 并且把解析的结果放到ResultItems中
        // css表达式
        page.putField("div",page.getHtml().css("div.mt h2").all());
        page.putField("title", page.getHtml().css("title"));

        // XPath--id=shortcut-2014下面的div下面的ul下面的li下面的div下面的a下面的文字
        //page.putField("div", page.getHtml().xpath("//div[@id=shortcut-2014]/div/ul/li/div/a/text()"));

        // 正则表达式
        //page.putField("a", page.getHtml().css("div#shortcut-2014 a").regex(".*京东.*").all());

        //处理结果API
        //page.putField("a2", page.getHtml().css("div#shortcut-2014 a").regex(".*京东.*").toString());

        //获取链接
        // 用page的addTargetRequests方法获取链接, 用正则表达式 筛选以2.shtml结尾的链接
        //page.addTargetRequests(page.getHtml().css("div.top_newslist").links().regex(".*2[.]shtml$").all());

        // 获取链接网页中的主句
        //page.putField("url", page.getHtml().css(".main-title").all());

        //检验去重
//        page.addTargetRequest("https://www.jd.com/moreSubject.aspx");
//        page.addTargetRequest("https://www.jd.com/moreSubject.aspx");
//        page.addTargetRequest("https://www.jd.com/moreSubject.aspx");
    }

    private Site site = Site.me()
            .setCharset("GBK") // 设置编码
            .setTimeOut(10000) // 设置超时时间, 单位是ms毫秒
            .setRetrySleepTime(3000) // 设置重试的间隔时间
            .setSleepTime(3); // 设置重试次数

    public Site getSite() {
        return site;
    }

    // 主函数, 执行爬虫
    public static void main(String[] args) {
        Spider.create(new JobProcessor())
                //初始访问url地址
                .addUrl("https://kuaibao.jd.com/")
                .run(); // 执行爬虫
    }
//     主函数, 执行爬虫
//    public static void main(String[] args) {
//        Spider.create(new JobProcessor())
//                //初始访问url地址, 爬取新浪的推荐新闻
//                .addUrl("https://www.sina.com.cn/")
//                .addPipeline(new FilePipeline("static"))
//                //5个线程
//                .thread(5)
//                .run(); // 执行爬虫
//        System.out.println("爬虫执行完毕");
//    }
//    public static void main(String[] args) {
//    Spider.create(new JobProcessor())
//            //初始访问url地址
//            .addUrl("https://www.jd.com/moreSubject.aspx")
//            //.addPipeline(new FilePipeline("D:/webmagic/"))
//            .setScheduler(new QueueScheduler()
//                    .setDuplicateRemover(new BloomFilterDuplicateRemover(10000000))) //参数设置需要对多少条数据去重
//            //.thread(1)//设置线程数
//            .run();
//    }
}